As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Query performance affects a user's ability to search and access information that is stored in information handling systems. This is especially true with respect to applications that use read-mostly servers. Read-mostly servers contain data that change at a slow rate, which implies that queries usually return the same results each time they run. For example, servers that support the Lightweight Directory Access Protocol (LDAP) are often read-mostly because directory information is relatively stable. Similarly, servers that support the Machine Readable Cataloging (MARC 21) bibliographic standard, as well as servers that hold historical information in general, tend to be read-mostly.
Response time at the client is an important performance measure of client/server systems. Response time is a function of client processing time, server processing time, and network transmission time. A traditional approach to improving response time is to increase client, server, or network capacity. This approach, however, is not always feasible given budget constraints. Another approach is to reconfigure the server to better handle the type and number of queries that are expected. Server tuning approaches like this can alleviate performance problems some of the time, but they cannot always adapt to changing workloads in the information handling system (i.e., changes in overall server load or changes in network load).
Moreover, server tuning may not be effective in mixed workload environments that change over time. In particular, there may be no way to optimize for both selective and unselective queries over the same data. A selective query is one in which the server performs all the filtering necessary to produce the precise result set specified by the query. An unselective query, on the other hand, avoids some server overhead by returning a superset of the required result set at the possible risk of incurring greater network and client overhead. It is then up to the client to complete result set filtering. The conditions that favor one style of a query over another can change dynamically and, therefore, are not amenable to static solutions.